#include "visitadorceldas.h"




VisitadorCeldas::VisitadorCeldas(Referencia<CreadorCeldas> creador)
{
    assert(!creador.esNull());

    real dx = creador->getDesplazamientoX();
    real dy = creador->getDesplazamientoY();

    for (int fila = 0; fila < numeroFilas; fila++)
    {
        for (int columna = 0; columna < numeroColumnas; columna++)
        {
            real x = (columnaInicial + columna) * dx;
            real y = (filaInicial + fila) * dy;
            Referencia<Celda> celda = creador->crearCelda(x, y, columnaInicial + columna, filaInicial + fila);

            celdas[fila][columna] = celda;
        }

    }
}

VisitadorCeldas::~VisitadorCeldas()
{
    //dtor
}



void VisitadorCeldas::visitar(Referencia<Visitante> visitante)
{
    visitante->actualizar();

    for (int fila = 0; fila < numeroFilas; fila++)
    {
        for (int columna = 0; columna < numeroColumnas; columna++)
        {
            Referencia<Celda> r = celdas[fila][columna];
            visitante->visitar(r);
        }

    }
}
